package cn.fuxue.hrms.common.entity;
import java.sql.Timestamp;
/**
 * @author 王文勇
 * @version 1.0
 * 班次分配实体类
 */

public class ShiftAssignment {

    // 班次分配唯一标识
    private int id;
    // 被分配班次的员工唯一标识，关联员工表
    private int employeeId;
    // 班次时间，如早班、中班等
    private String shiftTime;
    // 员工对班次分配的确认状态，PENDING 表示待确认，CONFIRMED 表示已确认，DECLINED 表示已拒绝
    private ConfirmationStatus confirmationStatus;
    // 创建该班次分配的用户唯一标识，关联用户表
    private int createId;
    // 班次分配创建时间
    private Timestamp createTime;
    // 班次分配更新时间
    private Timestamp updateTime;

    // 无参构造函数
    public ShiftAssignment() {
    }

    // 全参构造函数
    public ShiftAssignment(int id, int employeeId, String shiftTime, ConfirmationStatus confirmationStatus,
                           int createId, Timestamp createTime, Timestamp updateTime) {
        this.id = id;
        this.employeeId = employeeId;
        this.shiftTime = shiftTime;
        this.confirmationStatus = confirmationStatus;
        this.createId = createId;
        this.createTime = createTime;
        this.updateTime = updateTime;
    }

    // Getter 和 Setter 方法
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(int employeeId) {
        this.employeeId = employeeId;
    }

    public String getShiftTime() {
        return shiftTime;
    }

    public void setShiftTime(String shiftTime) {
        this.shiftTime = shiftTime;
    }

    public ConfirmationStatus getConfirmationStatus() {
        return confirmationStatus;
    }

    public void setConfirmationStatus(ConfirmationStatus confirmationStatus) {
        this.confirmationStatus = confirmationStatus;
    }

    public int getCreateId() {
        return createId;
    }

    public void setCreateId(int createId) {
        this.createId = createId;
    }

    public Timestamp getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Timestamp createTime) {
        this.createTime = createTime;
    }

    public Timestamp getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Timestamp updateTime) {
        this.updateTime = updateTime;
    }

    // 员工对班次分配的确认状态枚举
    public enum ConfirmationStatus {
        PENDING, CONFIRMED, DECLINED
    }

    @Override
    public String toString() {
        return "ShiftAssignment{" +
                "id=" + id +
                ", employeeId=" + employeeId +
                ", shiftTime='" + shiftTime + '\'' +
                ", confirmationStatus=" + confirmationStatus +
                ", createId=" + createId +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                '}';
    }
}